#include<stdio.h>
#include<stdlib.h> 

#define eleType char

// 定义ListNode结构体
// 使用方法 struct ListNode node;
// 存储所有子节点的串联表
typedef struct ListNode {
    struct TreeNode* data;
    struct ListNode* next;
} ListNode;

//起个ListNOde别名方便使用
// 使用方法ListNode ListNode;
//表示树节点：数据类型，链表头（链接所有子节点的链表头）
typedef struct TreeNode {
    eleType data;
    ListNode *childrenHead;
} TreeNode;


void AddChild(TreeNode *parent, TreeNode *child){
    ListNode *childNode = (ListNode*)malloc(sizeof(ListNode));
    childNode -> next = NULL;
    childNode -> data = child;

    if(parent -> childrenHead == NULL){
        parent->childrenHead = childNode;
    }else{
        childNode -> next = parent -> childrenHead;
        parent -> childrenHead = childNode;
    }
}


// 结构树体的定义:
typedef struct Tree 
{
    TreeNode *nodes;
    TreeNode *root;
}Tree;

// 创建树
void TreeCreate(Tree *t,int size){
    t -> nodes = (TreeNode*) malloc(sizeof(TreeNode)*size);
    t -> root = NULL;
    for(int i=0;i<size;i++){
        t->nodes[i].childrenHead = NULL;
    }
}

// 销毁树
void TreeDestory(Tree *t){
    free(t->nodes);
    t->nodes = NULL;
    t->root = NULL;

}

// 获得树的节点
TreeNode* TreeGerNode(Tree *t,int id){
    return &t->nodes[id];
}

// 设置树的根节点
void TreeSetRoot(Tree *t,int id){
    t->root = TreeGetNode(t,id);
}

//设置树的边
void TreeAddChild(Tree*t,int pa)


int main()
{
   return 0;
}